package com.ruoyi.project.system.income.controller;

import com.ruoyi.framework.aspectj.lang.annotation.Excel;
import com.ruoyi.framework.web.controller.BaseController;
import com.ruoyi.framework.web.domain.AjaxResult;
import com.ruoyi.project.system.income.domain.Income;
import com.ruoyi.project.system.income.service.IIncomeService;
import com.ruoyi.project.system.income.vo.IncomeVo;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import java.math.BigDecimal;
import java.util.*;

@Controller
@RequestMapping("/system/incomestatistical")
public class IncomestatisticalController extends BaseController {
    private String prefix = "system/statistical";

    @Autowired
    private IIncomeService incomeService;
    @RequiresPermissions("system:statistical:view")
    @GetMapping()
    public String income()
    {
        return prefix + "/statistical";
    }
//    @GetMapping("/statisti")
//    @ResponseBody
//    public AjaxResult statistical(){
//        Income income = new Income();
//        income.setSkssnd("2019");
//        List<Income> list = incomeService.selectIncomeList(income);
//        Income incomes = new Income();
//        incomes.setSkssnd("2020");
//        List<Income> list2020 = incomeService.selectIncomeList(incomes);
//        Map <String,Object> map = new HashMap<>();
//        String [] mapshui = {"增值税","金融业增值税"};
//         BigDecimal[] map2019 = {};
//        BigDecimal[] map2020 = {};
//        List<String> mapshuilist=new ArrayList(Arrays.asList(mapshui));
//        List<BigDecimal> map2019list=new ArrayList(Arrays.asList(map2019));
//        List<BigDecimal> map2020list=new ArrayList(Arrays.asList(map2020));
//        /** 增值税 */
//        BigDecimal zzs  = list.stream().filter(p->p.getZzs()!=null).map(Income::getZzs).reduce(BigDecimal.ZERO,BigDecimal::add);
//        BigDecimal zzs2020  = list2020.stream().filter(p->p.getZzs()!=null).map(Income::getZzs).reduce(BigDecimal.ZERO,BigDecimal::add);
//        mapshuilist.add(0,"增值税");
//        map2019list.add(0,zzs);
//        map2020list.add(0,zzs2020);
//        /** 金融业增值税 */
//        BigDecimal jryzzs = list.stream().filter(p->p.getJryzzs()!=null).map(Income::getJryzzs).reduce(BigDecimal.ZERO,BigDecimal::add);
//        BigDecimal jryzzs2020 = list2020.stream().filter(p->p.getJryzzs()!=null).map(Income::getJryzzs).reduce(BigDecimal.ZERO,BigDecimal::add);
//        mapshuilist.add(1,"金融业增值税");
//        map2019list.add(1,jryzzs);
//        map2020list.add(1,jryzzs2020);
//        /** 消费税 */
//        BigDecimal xfs = list.stream().filter(p->p.getXfs()!=null).map(Income::getXfs).reduce(BigDecimal.ZERO,BigDecimal::add);
//        BigDecimal xfs2020 = list2020.stream().filter(p->p.getXfs()!=null).map(Income::getXfs).reduce(BigDecimal.ZERO,BigDecimal::add);
//        mapshuilist.add(2,"消费税");
//        map2019list.add(2,xfs);
//        map2020list.add(2,xfs2020);
//        /** 企业所得税 */
//        BigDecimal qysds = list.stream().filter(p->p.getQysds()!=null).map(Income::getQysds).reduce(BigDecimal.ZERO,BigDecimal::add);
//        BigDecimal qysds2020 = list2020.stream().filter(p->p.getQysds()!=null).map(Income::getQysds).reduce(BigDecimal.ZERO,BigDecimal::add);
//        mapshuilist.add(3,"企业所得税");
//        map2019list.add(3,qysds);
//        map2020list.add(3,qysds2020);
//        /** 个人所得税 */
//        BigDecimal grsds = list.stream().filter(p->p.getGrsds()!=null).map(Income::getGrsds).reduce(BigDecimal.ZERO,BigDecimal::add);
//        BigDecimal grsds2020 = list2020.stream().filter(p->p.getGrsds()!=null).map(Income::getGrsds).reduce(BigDecimal.ZERO,BigDecimal::add);
//        mapshuilist.add(4,"个人所得税");
//        map2019list.add(4,grsds);
//        map2020list.add(4,grsds2020);
//        /** 资源税 */
//        BigDecimal zys = list.stream().filter(p->p.getZys()!=null).map(Income::getZys).reduce(BigDecimal.ZERO,BigDecimal::add);
//        BigDecimal zys2020 = list2020.stream().filter(p->p.getZys()!=null).map(Income::getZys).reduce(BigDecimal.ZERO,BigDecimal::add);
//        mapshuilist.add(5,"资源税");
//        map2019list.add(5,zys);
//        map2020list.add(5,zys2020);
//        /** 城市建设税 */
//        BigDecimal csjss = list.stream().filter(p->p.getCsjss()!=null).map(Income::getCsjss).reduce(BigDecimal.ZERO,BigDecimal::add);
//        BigDecimal csjss2020 = list2020.stream().filter(p->p.getCsjss()!=null).map(Income::getCsjss).reduce(BigDecimal.ZERO,BigDecimal::add);
//        mapshuilist.add(6,"城市建设税");
//        map2019list.add(6,csjss);
//        map2020list.add(6,csjss2020);
//        /** 房产税 */
//        BigDecimal fcs= list.stream().filter(p->p.getFcs()!=null).map(Income::getFcs).reduce(BigDecimal.ZERO,BigDecimal::add);
//        BigDecimal fcs2020= list2020.stream().filter(p->p.getFcs()!=null).map(Income::getFcs).reduce(BigDecimal.ZERO,BigDecimal::add);
//        mapshuilist.add(7,"房产税");
//        map2019list.add(7,fcs);
//        map2020list.add(7,fcs2020);
//        /** 印花税 */
//         BigDecimal yhs = list.stream().map(Income::getYhs).reduce(BigDecimal.ZERO,BigDecimal::add);
//
//        /** 城镇土地使用税 */
//         BigDecimal cztdsys = list.stream().map(Income::getCztdsys).reduce(BigDecimal.ZERO,BigDecimal::add);
//
//        /** 土地增值税 */
//         BigDecimal tdzzs = list.stream().map(Income::getTdzzs).reduce(BigDecimal.ZERO,BigDecimal::add);
//
//        /** 车船税 */
//
//         BigDecimal ccs = list.stream().map(Income::getCcs).reduce(BigDecimal.ZERO,BigDecimal::add);
//
//        /** 车辆购置税 */
//         BigDecimal clgzs = list.stream().map(Income::getClgzs).reduce(BigDecimal.ZERO,BigDecimal::add);
//
//        /** 耕地占用税 */
//
//        BigDecimal gdzys = list.stream().map(Income::getGdzys).reduce(BigDecimal.ZERO,BigDecimal::add);
//
//        /** 契税 */
//
//         BigDecimal qs = list.stream().map(Income::getQs).reduce(BigDecimal.ZERO,BigDecimal::add);
//
//        /** 环境保护税 */
//
//        BigDecimal hjbhs = list.stream().map(Income::getHjbhs).reduce(BigDecimal.ZERO,BigDecimal::add);
//
//        /** 教育费附加 */
//
//         BigDecimal jyffj  = list.stream().map(Income::getJyffj).reduce(BigDecimal.ZERO,BigDecimal::add);
//
//        /** 地方教育附加 */
//        BigDecimal dfjyfj = list.stream().map(Income::getDfjyfj).reduce(BigDecimal.ZERO,BigDecimal::add);
//
//        /** 文化事业建设费 */
//        BigDecimal whsyjsf = list.stream().map(Income::getWhsyjsf).reduce(BigDecimal.ZERO,BigDecimal::add);
//
//        /** 税务部门罚没收入 */
//
//        BigDecimal swbmfmsr = list.stream().map(Income::getSwbmfmsr).reduce(BigDecimal.ZERO,BigDecimal::add);
//
//        /** 残疾人就业保障金 */
//
//        BigDecimal cjrjybzj = list.stream().map(Income::getCjrjybzj).reduce(BigDecimal.ZERO,BigDecimal::add);
//
//        /** 工会经费 */
//         BigDecimal ghjf  = list.stream().map(Income::getGhjf).reduce(BigDecimal.ZERO,BigDecimal::add);
//        String[] shui=new String[mapshuilist.size()];
//        list.toArray(shui);
//        String[] shui2019=new String[map2019list.size()];
//        list.toArray(shui);
//        String[] shui2020=new String[map2020list.size()];
//        list.toArray(shui);
//        map.put("mapshui",shui);
//        map.put("map2019",shui2019);
//        map.put("map2020",shui2020);
//        return AjaxResult.success(map);
//    }
    @GetMapping("/statisti")
    @ResponseBody
    public AjaxResult statistical(){
        List<String> stringList = new LinkedList<>();
        stringList.add("增值税");
        stringList.add("金融业增值税");
        stringList.add("消费税");
        stringList.add("企业所得税");
        stringList.add("个人所得税");
        stringList.add("资源税");
        stringList.add("城市建设税");
        stringList.add("房产税");
        stringList.add("印花税");
        stringList.add("城镇土地使用税");
        stringList.add("土地增值税");
        stringList.add("车船税");
        stringList.add("车辆购置税");
        stringList.add("耕地占用税");
        stringList.add("契税");
        stringList.add("环境保护税");
        stringList.add("教育费附加");
        stringList.add("地方教育附加");
        stringList.add("文化事业建设费");
        stringList.add("税务部门罚没收入");
        stringList.add("残疾人就业保障金");
        stringList.add("工会经费");
        List<BigDecimal> list2019 = new LinkedList<>();
        IncomeVo vo2019 = incomeService.sumIncome("2019");
        if (vo2019!=null) {
            list2019.add(vo2019.getZzs());
            list2019.add(vo2019.getJryzzs());
            list2019.add(vo2019.getXfs());
            list2019.add(vo2019.getQysds());
            list2019.add(vo2019.getGrsds());
            list2019.add(vo2019.getZys());
            list2019.add(vo2019.getCsjss());
            list2019.add(vo2019.getFcs());
            list2019.add(vo2019.getYhs());
            list2019.add(vo2019.getCztdsys());
            list2019.add(vo2019.getTdzzs());
            list2019.add(vo2019.getCcs());
            list2019.add(vo2019.getClgzs());
            list2019.add(vo2019.getGdzys());
            list2019.add(vo2019.getQs());
            list2019.add(vo2019.getHjbhs());
            list2019.add(vo2019.getJyffj());
            list2019.add(vo2019.getDfjyfj());
            list2019.add(vo2019.getWhsyjsf());
            list2019.add(vo2019.getSwbmfmsr());
            list2019.add(vo2019.getCjrjybzj());
            list2019.add(vo2019.getGhjf());
        }
        List<BigDecimal> list2020 = new LinkedList<>();
        IncomeVo vo2020 = incomeService.sumIncome("2020");
        if (vo2020!=null) {
            list2020.add(vo2020.getZzs());
            list2020.add(vo2020.getJryzzs());
            list2020.add(vo2020.getXfs());
            list2020.add(vo2020.getQysds());
            list2020.add(vo2020.getGrsds());
            list2020.add(vo2020.getZys());
            list2020.add(vo2020.getCsjss());
            list2020.add(vo2020.getFcs());
            list2020.add(vo2020.getYhs());
            list2020.add(vo2020.getCztdsys());
            list2020.add(vo2020.getTdzzs());
            list2020.add(vo2020.getCcs());
            list2020.add(vo2020.getClgzs());
            list2020.add(vo2020.getGdzys());
            list2020.add(vo2020.getQs());
            list2020.add(vo2020.getHjbhs());
            list2020.add(vo2020.getJyffj());
            list2020.add(vo2020.getDfjyfj());
            list2020.add(vo2020.getWhsyjsf());
            list2020.add(vo2020.getSwbmfmsr());
            list2020.add(vo2020.getCjrjybzj());
            list2020.add(vo2020.getGhjf());
        }
        String[] shui=new String[stringList.size()];
        stringList.toArray(shui);
        BigDecimal[] shui2019=new BigDecimal[list2019.size()];
        list2019.toArray(shui2019);
        BigDecimal[] shui2020=new BigDecimal[list2020.size()];
        list2020.toArray(shui2020);
        Map<String,Object> map = new LinkedHashMap<>();
        map.put("mapshui",shui);
        map.put("map2019",shui2019);
        map.put("map2020",shui2020);
        return AjaxResult.success(map);
    }
}
